//#include<iostream>
//using namespace std;
//
//template<class K, class T>
//class Person
//{
//public:
//	Person(K a, T b)
//		:_a(a)
//		,_b(b)
//	{}
//	void printbug2()
//	{
//		Man m(1, 2, this);
//		cout <<m._x<< endl;
//	}
//	struct Man
//	{
//		K _x;
//		T _y;
//		Person* _pt;
//		Man(K x, T y, Person* pt)
//			:_x(x)
//			,_y(y)
//			,_pt(pt)
//		{}
//		void printbug()
//		{
//			cout << _pt->_a << " " << _pt->_b << endl;
//		}
//	};
//private:
//	K _a;
//	T _b;
//};
//
//int main()
//{
//	Person<int, int> p(1, 2);
//	Person<int, int>::Man m(1, 2, &p);
//	m.printbug();
//	p.printbug2();
//	return 0;
//}
//
//#include<iostream>
//using namespace std;
//#include<vector>
//
//struct Cat
//{
//	vector<int> _v;
//	Cat(int a, vector<int>& v)
//		:_a(a)
//		,_v(v)
//	{
//
//	}
//	int _a;
//};
//
//class Dog
//{
//	friend Cat;
//public:
//	Dog()
//	{
//		_ht.resize(10, 2);
//	}
//	Cat cat(10, dog._ht);
//private:
//	vector<int> _ht;
//};
//
//int main()
//{
//	
//	return 0;
//}